/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sistema.aplicacao;

import java.awt.event.ActionEvent;
import java.sql.*;
import com.sistema.db.Banco;
import com.sistema.tools.Md5;
import java.awt.event.ActionListener;
import javax.swing.*;

/**
 *
 * @author geraldo
 */
public class DialogAlterarSenha extends JDialog
{

    private JPasswordField txtSenhaAntiga;
    private JPasswordField txtSenhaNova;
    private JPasswordField txtConfirmaSenha;
    private JButton btnAlterar;
    private JButton btnCancelar;
    private String senhaAntiga;
    private int id;
    private boolean fecha = false;

    public DialogAlterarSenha( int id )
    {
        setTitle( "Alterar Senha" );
        setSize( 400, 300 );
        setLocationRelativeTo( null );
        setResizable( false );
        setLayout( null );
        this.id = id;
        iniciaComponentes();
        actions();
        setVisible( true );

    }

    public void ConsultaSenhaAntiga()
    {
        Banco db = new Banco();
        ResultSet consulta = db.executarConsulta( "SELECT senha FROM usuarios WHERE id=" + id );

        try
        {
            while ( consulta.next() )
            {
                this.senhaAntiga = consulta.getString( "senha" );
            }
        } catch ( Exception e )
        {
            e.printStackTrace();
        }
        db.fecha();
    }

    public void iniciaComponentes()
    {
        add( new JLabel( "Senha Antiga: " ) ).setBounds( 10, 40, 150, 25 );
        txtSenhaAntiga = new JPasswordField();
        add( txtSenhaAntiga ).setBounds( 160, 40, 200, 25 );

        add( new JLabel( "Nova Senha: " ) ).setBounds( 10, 85, 150, 25 );
        txtSenhaNova = new JPasswordField();
        add( txtSenhaNova ).setBounds( 160, 85, 200, 25 );

        add( new JLabel( "Confirma Senha: " ) ).setBounds( 10, 130, 150, 25 );
        txtConfirmaSenha = new JPasswordField();
        add( txtConfirmaSenha ).setBounds( 160, 130, 200, 25 );

        btnAlterar = new JButton( "Alterar" );
        add( btnAlterar ).setBounds( 80, 200, 120, 30 );

        btnCancelar = new JButton( "Cancelar" );
        add( btnCancelar ).setBounds( 210, 200, 120, 30 );

        btnAlterar.setIcon( new ImageIcon( getClass().getResource( "/img/img_aplicar.png" ) ) );
        btnCancelar.setIcon( new ImageIcon( getClass().getResource( "/img/img_cancelar.png" ) ) );
    }

    public void alteraSenha()
    {
        ConsultaSenhaAntiga();

        String sAntiga = txtSenhaAntiga.getText();
        String sNova = txtSenhaNova.getText();
        String sConfirma = txtConfirmaSenha.getText();
        String verificaSenhaAntiga = "";
        String novaSenha = "";
        String confirmaSenha = "";
        
        
        try{
            
            verificaSenhaAntiga = Md5.md5( sAntiga );
            novaSenha = Md5.md5( sNova );
            confirmaSenha = Md5.md5( sConfirma );
            
        }catch(Exception e)
        {
            JOptionPane.showMessageDialog( null, "Erro no sistema: "+e, "Mensagem", JOptionPane.ERROR_MESSAGE);
            return;
        }


        if ( verificaSenhaAntiga.equalsIgnoreCase( this.senhaAntiga ) )
        {
            if ( novaSenha.equalsIgnoreCase( confirmaSenha ) && novaSenha.equalsIgnoreCase( "" ) == false )
            {
                Banco db = new Banco();
                db.executarAtualizacao( "UPDATE usuarios set senha='" + novaSenha + "' WHERE id = " + id + "" );
                db.fecha();
                this.fecha = true;

            } else
            {
                JOptionPane.showMessageDialog( null, "A nova senha está diferente do confirmar!" );
            }
        } else
        {
            JOptionPane.showMessageDialog( null, "Senha antiga inválida!" );
        }
    }

    public void actions()
    {
        btnAlterar.addActionListener( new ActionListener()
        {

            public void actionPerformed( ActionEvent ae )
            {
                alteraSenha();
                txtSenhaAntiga.setText( "" );
                txtSenhaNova.setText( "" );
                txtConfirmaSenha.setText( "" );

                if(fecha == true)
                {
                    dispose();
                    JOptionPane.showMessageDialog( null, "Senha alterada com sucesso", "Mensagem", JOptionPane.INFORMATION_MESSAGE );                 
                }
            }
        } );


        btnCancelar.addActionListener( new ActionListener()
        {

            public void actionPerformed( ActionEvent ae )
            {
                dispose();
            }
        } );

    }
}
